This application relates to data encoding and, more particularly, to data encoding in relation to error correction.
Electronic information is increasingly being relied upon as a preferred medium for conducting transactions. Advances in this area of technology are apparent in telecommunication and information storage devices, where developments in throughput and storage density are allowing users to process information at much greater rates and quantities than before.
Many communications and storage devices include error-correction technologies that provide a certain degree of data integrity across, for example, noisy channels or less-than-reliable storage media. In a typical error-correction process, a transmitter encodes user data with an error-correction code and sends the resulting code to a receiver from which the received information is decoded to recover the original user information. The encoding process ensures that the error-correction code conforms to specific rules of construction and departures from this construction may be automatically detected and, in some instances, corrected during the decoding process. Hence, the original user data is generally recoverable from the transmitted signal even when portions of the data are altered or deleted during transmission.
User data is typically grouped into blocks called “datawords.” An error-correction code is a mapping of datawords into corresponding blocks called “codewords.” In turn, the datawords and codewords contain symbols, which are groupings of one or more bits. The number of symbols in a dataword is commonly denoted by a variable k, and the number of symbols in a codeword is commonly denoted by a variable n. An encoder generally produces a greater number of codeword symbols than dataword symbols so that, for a codeword having k data bits, the remaining n−k parity bits may be used to detect and, in some instances, correct the data bits in the case that an error occurs. A code corresponding to such an encoder is said to have a code rate r of k/n.
In certain instances, code rates, along with code complexity, influence error-correcting capabilities of a particular coding scheme. A high code rate means information content is relatively high and coding overhead is relatively low. However, the fewer bits used for coding redundancy or parity, the less error protection is provided. At the same time, decoding cost increases significantly with user data length k. This increase may lead to, for example, a transmission failure if a piece of needed information cannot be provided in time due to delays incurred in decoding the information. Additionally, an increase in the data length k can require increased cost (e.g., area and power consumption) on a chip if throughput is to be substantially preserved.
In view of the forgoing, it would be desirable to provide systems and methods for optimizing various configuration parameters of an error-correction code so as to minimize its decoding complexity while maintaining a desired level of error protection.